<?php

 //链式查询方法
namespace app\text\controller;


use think\Db;

class Chain
{
    public function index(){
        //关联数组查询
//        $result = Db::name('user')->where(
//            [
//                'price'=>80,
//                'gender'=>'男'
//            ]
//        )->select();

        //索引数组查询
//        $result = Db::name('user')->where([
//            ['gender','=','男'],
//            ['price','=',80]
//        ])->select();

        //将复杂的数组组装后，通过变量传递，增加可读性
//        $map[] = ['gender','=','男'];
//        $map[] = ['price','in',[60,70,80]];
//        $result = Db::name('user')->where($map)->select();

        //字符串形式传递
//        $result = \db('user')->where('gender="男" AND price IN (60,70,80)')->select();

        //field
//        $result = \db('user')->field('id,username,email')->select();
//        $result = \db('user')->field(['id,username,email'])->select();

        //使用field()方法，给指定的字段设置别名
//        $result = \db('user')->field('id,username as name')->select();
//        $result = \db('user')->field(['id,username as name'])->select();

        //在field()方法里，可以直接给字段设置MYSQL函数
//        $result = \db('user')->field('SUM(price)')->select();

        //对于更加复杂的mysql函数，必须使用字段数组形式
//        $result = Db::name('user')->field(['id','LEFT(email,5)'=>'leftemail',])->select();

        //使用field(true)的布尔参数，可以显示的查询获取所有字段，而不是*
//        $result = \db('user')->field(true)->select();

        //使用field()方中字段排除，可以屏蔽掉想要不显示的字段
//        $result = \db('user')->field('id',true)->select();

        //使用field()方法在新增时，验证字段的合法性
        $data = array(
            'username'=>'鬼切',
            'password'=>123,
            'gender'=>'男',
            'email'=>'guiqie@qq.com',
            'price'=>90,
            'details'=>'123',
            'create_time'=> date('Y-m-d H:i:s')
        );
//        $result = \db('user')->field('username,password,details')->insert($data);

        //使用alias()方法，给数据库起一个别名
//        \db('user')->name('user')->alias('a')->select();


        //limit
        //1 使用limit方法，限制获取输出数据的个数
//        \db('user')->limit(5)->select();

        //2 分页模式，即传递两个参数，比如从第3条开始显示5条，limit()
//        \db('user')->limit(2,5)->select();

        //page
        //1 page()分页方法 优化了limit()方法，无需计算分页条数
         //第一页
//        \db('user')->page(1,5)->select();
        //第二页
//        \db('user')->page(2,5)->select();

        //order
        //1 使用order()方法 可以指定排序方法，没有指定第二参数，默认asc
//        $result = \db('user')->order('id','desc')->select();
        // 2 支持数组的方法，对多个字段进行排序
        //先按时间倒序 在按价格正序
//        $result = \db('user')->order(['create_time'=>'desc','price'=>'asc'])->select();

        //group
        // 1 使用group()方法，给性别不同的人进行price字段的总和统计
//        $result = \db('user')->field('gender,SUM(price)')->group('gender')->select();

        // 2 也可以进行多字段分组统计
//        $result = \db('user')->field('gender,sum(price)')->group('gender,password')->select();

        //having
        // 1使用group()分组后，再使用having()进行筛选
//      $result = \db('user')->field('gender,sum(price)')->group('gender')->having('sum(price)>600')->select();



        $result = User::select();
        return json($result);



//        return Db::getLastSql();
//        return json($result);
    }
}